#include "commerrno.h"
#include "CSceneCfg.h"

int CSceneCfg::AddConfig(CSceneCfgData& stCfgData)
{
    if (!stCfgData.IsValidID())
    {
        return ERROR_SCENE_OVER_RESID;
    }
    
    int iIndex = _stSceneCfgHash.HashFind(stCfgData.GetResID());
    if (iIndex >= 0)
    {
        return ERROR_SCENE_REPEAT_RESID;
    }

    iIndex = _stSceneCfgHash.HashAlloc(stCfgData.GetResID());
    if (iIndex < 0)
    {
        return RET_SYSTEM_FAIL;
    }

    _stSceneCfgHash[iIndex] = stCfgData;

    return 0;
}

int CSceneCfg::FindConfig(short shResID)
{
    if (shResID <= 0)
    {
        CT_WARNING(("ResID(%d) invalid!", shResID));
        return -1;//因为返回下标 所以这里必须返回负数
    }

    int iIndex = _stSceneCfgHash.HashFind(shResID);
    if (iIndex < 0)
    {
        CT_WARNING(("ResID(%d) config empty!", shResID));
        return -1;//因为返回下标 所以这里必须返回负数
    }

    return iIndex;
}

CSceneCfgData& CSceneCfg::GetConfig(int iIndex)
{
    return _stSceneCfgHash[iIndex];
}

